home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.cs.arizona.edu
/
ftp.cs.arizona.edu.tar
/
ftp.cs.arizona.edu
/
icon
/
newsgrp
/
group98b.txt
/
000041_icon-group-sender _Wed May 27 08:21:10 1998.msg
< prev
next >
Wrap
Internet Message Format
|
2000-09-20
|
9KB
Return-Path: <icon-group-sender>
Received: from kingfisher.CS.Arizona.EDU (kingfisher.CS.Arizona.EDU [192.12.69.239])
by baskerville.CS.Arizona.EDU (8.8.8/8.8.7) with SMTP id IAA03028
for <icon-group-addresses@baskerville.CS.Arizona.EDU>; Wed, 27 May 1998 08:21:10 -0700 (MST)
Received: by kingfisher.CS.Arizona.EDU (5.65v4.0/1.1.8.2/08Nov94-0446PM)
id AA01621; Wed, 27 May 1998 08:21:04 -0700
Message-Id: <356B9C3B.15DA6101@charlie.cns.iit.edu>
Date: Tue, 26 May 1998 23:53:15 -0500
From: "Thomas W. Christopher" <tc@charlie.cns.iit.edu>
Organization: Illinois Institute of Technology
X-Mailer: Mozilla 4.05 [en] (WinNT; I)
Mime-Version: 1.0
To: Guy Laden <guy@math.tau.ac.il>
Cc: icon-group@baskerville.CS.Arizona.EDU
Subject: Re: Writing compilers in Icon
References: <199805222014.XAA02171@orion.math.tau.ac.il>
Content-Type: multipart/mixed; boundary="------------D07FD781A7537D236717351D"
Errors-To: icon-group-errors@optima.CS.Arizona.EDU
Status: RO
Content-Length: 8242
This is a multi-part message in MIME format.
--------------D07FD781A7537D236717351D
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
I have found Icon quite pleasant for compiler writing, although not for
production quality compilers. I use them for teaching.
See: http://www.iit.edu/~tc/toolsfor.htm
I found generators a lot more useful for writing my parser generator
than for writing compilers themselves.
I have used coexpressions for scanners, but I don't currently due to the
difficulty of explaining it to students.
My parser uses string invocation of procedures. All the grammar symbols,
including action symbols, are represented by strings in my parse tables. The
action symbols are the names of the semantic routines to call.
I'll attach a grammar for Icon that my LL(k) parser generator, tcllk, can
handle.
If you pass it through:
iconx tcllk -p icon.grm
you might be able to use the after-translation version of the grammar for
recursive
descent, although it's a lot easier to use my parser generator and parser.
A few suggestions for scanning tokens in Icon and passing them on to the
parser:
1) queue up the tokens leaving the scanner before the parser sees them, use
the
queue to do (2) and (3);
2) remove duplicate ";" and end-of-line symbols;
3) remove end-of-line symbols preceeding or following symbols like "do",
"then", "else";
4) fix the panic-mode error recovery to respond to an unexpected end-of-line
symbol by throwing it away without comment.
Guy Laden wrote:
> I noticed the newly announced implementation of Jcon is written in Icon.
> I was wondering whether anybody can comment on how suitable they
> find Icon for writing compilers? Do any of Icon's unique features
> prove especially useful for this task? I'm wondering more about
> generators and goal-directed evaluation; the built-in data-structures
> are obviously useful.
>
> btw, does anybody have an Icon grammar they are willing to share
> that is suitable for recursive descent parsing?
>
> Regards,
> Guy.
--
Thomas W. Christopher --------------------- tc@charlie.cns.iit.edu
Associate Prof., Illinois Inst. of Tech.--- http://www.iit.edu/~tc
Principal, Tools of Computing LLC.--------- http://www.toc-press.com
--------------D07FD781A7537D236717351D
Content-Type: application/x-unknown-content-type-grm_auto_file; name="icon.grm"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="icon.grm"
c3RhcnQgOiBwcm9ncmFtLg0KcHJvZ3JhbSA9IGRlY2xhcmF0aW9uDQoJfCBkZWNsYXJhdGlv
biBwcm9ncmFtDQoJLg0KZW9zID0gIjsiIHwgRU9MIC4NCmRlY2xhcmF0aW9uID0gbGlua19k
ZWNsYXJhdGlvbg0KCXwgZ2xvYmFsX2RlY2xhcmF0aW9uDQoJfCByZWNvcmRfZGVjbGFyYXRp
b24NCgl8IHByb2NlZHVyZV9kZWNsYXJhdGlvbg0KCS4NCmxpbmtfZGVjbGFyYXRpb24gPSAi
bGluayIgbGlua19saXN0DQoJLg0KbGlua19saXN0ID0gZmlsZV9uYW1lDQoJfCBmaWxlX25h
bWUgIiwiIGxpbmtfbGlzdA0KCS4NCmZpbGVfbmFtZSA9IGlkZW50aWZpZXINCgl8IHN0cmlu
Z19saXRlcmFsDQoJLg0KZ2xvYmFsX2RlY2xhcmF0aW9uID0gImdsb2JhbCIgaWRlbnRpZmll
cl9saXN0DQoJLg0KI2lkZW50aWZpZXJfbGlzdF9vcHQgPSBpZGVudGlmaWVyX2xpc3R8Lg0K
aWRlbnRpZmllcl9saXN0ID0gaWRlbnRpZmllcg0KCXwgaWRlbnRpZmllcl9saXN0ICIsIiBp
ZGVudGlmaWVyDQoJLg0KcmVjb3JkX2RlY2xhcmF0aW9uID0gDQoJICAicmVjb3JkIiBpZGVu
dGlmaWVyICIoIiBmaWVsZF9saXN0X29wdCAiKSINCgkuDQpmaWVsZF9saXN0X29wdCA9IGZp
ZWxkX2xpc3QNCgl8DQoJLg0KZmllbGRfbGlzdCA9IGZpZWxkX25hbWUNCgl8IGZpZWxkX2xp
c3QgIiwiIGZpZWxkX25hbWUNCgkuDQpmaWVsZF9uYW1lID0gaWRlbnRpZmllcg0KCS4NCnBy
b2NlZHVyZV9kZWNsYXJhdGlvbiA9DQoJICBwcm9jX2hlYWRlciBsb2NhbHNfb3B0IGluaXRp
YWxfb3B0IGV4cHJlc3Npb25fc2VxdWVuY2UgImVuZCINCgkuDQpwcm9jX2hlYWRlciA9IA0K
CSAgInByb2NlZHVyZSIgaWRlbnRpZmllciAiKCIgcGFyYW1ldGVyX2xpc3Rfb3B0ICIpIiBl
b3MNCgkuDQpwYXJhbWV0ZXJfbGlzdF9vcHQgPSBwYXJhbWV0ZXJfbGlzdA0KCXwgDQoJLg0K
cGFyYW1ldGVyX2xpc3QgPSBpZGVudGlmaWVyDQoJfCBpZGVudGlmaWVyICJbIiAiXSINCgl8
IGlkZW50aWZpZXIgIiwiIHBhcmFtZXRlcl9saXN0DQoJLg0KbG9jYWxzX29wdCA9IGxvY2Fs
cw0KCXwNCgkuDQpsb2NhbHMgPSBsb2NhbF9zcGVjaWZpY2F0aW9uIGlkZW50aWZpZXJfbGlz
dA0KCXwgbG9jYWxfc3BlY2lmaWNhdGlvbiBpZGVudGlmaWVyX2xpc3QgZW9zIGxvY2Fscw0K
CS4NCmxvY2FsX3NwZWNpZmljYXRpb24gPSAibG9jYWwiIA0KCXwgInN0YXRpYyINCgkuDQpp
bml0aWFsX29wdCA9ICJpbml0aWFsIiBleHByZXNzaW9uIGVvcw0KCXwNCgkuDQpleHByZXNz
aW9uX3NlcXVlbmNlID0gZXhwcmVzc2lvbl9vcHQNCgl8IGV4cHJlc3Npb25fc2VxdWVuY2Ug
ZW9zIGV4cHJlc3Npb25fb3B0DQoJLg0KZXhwcmVzc2lvbl9vcHQgPSBleHByZXNzaW9uDQoJ
fA0KCS4NCmV4cHJlc3Npb24gPQ0KCSAgImJyZWFrIiBleHByZXNzaW9uX29wdA0KCXwgImNy
ZWF0ZSIgZXhwcmVzc2lvbg0KCXwgInJldHVybiIgZXhwcmVzc2lvbl9vcHQNCgkjfCAic3Vz
cGVuZCIgZXhwcmVzc2lvbl9vcHQgZG9fY2xhdXNlX29wdA0KCXwgInN1c3BlbmQiIGV4cHJl
c3Npb25fb3B0IHN1c3BlbmRfZG9fY2xhdXNlX29wdA0KCXwgImZhaWwiDQoJfCAibmV4dCIN
Cgl8ICJjYXNlIiBleHByZXNzaW9uICJvZiIgInsiIGNhc2VfbGlzdCAifSINCgl8ICJpZiIg
ZXhwcmVzc2lvbiAidGhlbiIgZXhwcmVzc2lvbiBlbHNlX2NsYXVzZV9vcHQNCgl8ICJyZXBl
YXQiIGV4cHJlc3Npb24NCgkjfCAid2hpbGUiIGV4cHJlc3Npb24gZG9fY2xhdXNlX29wdA0K
CSN8ICJ1bnRpbCIgZXhwcmVzc2lvbiBkb19jbGF1c2Vfb3B0DQoJI3wgImV2ZXJ5IiBleHBy
ZXNzaW9uIGRvX2NsYXVzZV9vcHQNCgl8ICJ3aGlsZSIgZXhwcmVzc2lvbiB3aGlsZV9kb19j
bGF1c2Vfb3B0DQoJfCAidW50aWwiIGV4cHJlc3Npb24gdW50aWxfZG9fY2xhdXNlX29wdA0K
CXwgImV2ZXJ5IiBleHByZXNzaW9uIGV2ZXJ5X2RvX2NsYXVzZV9vcHQNCgl8IGV4cHIxDQoJ
Lg0KI2RvX2NsYXVzZV9vcHQgPSAiZG8iIGV4cHJlc3Npb258Lg0Kc3VzcGVuZF9kb19jbGF1
c2Vfb3B0ID0gImRvIiBleHByZXNzaW9ufC4NCndoaWxlX2RvX2NsYXVzZV9vcHQgPSAiZG8i
IGV4cHJlc3Npb258Lg0KdW50aWxfZG9fY2xhdXNlX29wdCA9ICJkbyIgZXhwcmVzc2lvbnwu
DQpldmVyeV9kb19jbGF1c2Vfb3B0ID0gImRvIiBleHByZXNzaW9ufC4NCg0KZWxzZV9jbGF1
c2Vfb3B0ID0gImVsc2UiIGV4cHJlc3Npb24NCgl8DQoJLg0KY2FzZV9saXN0ID0gY2FzZV9j
bGF1c2UNCgl8IGNhc2VfbGlzdCBlb3MgY2FzZV9jbGF1c2UNCgkuDQpjYXNlX2NsYXVzZSA9
IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb24NCgl8ICJkZWZhdWx0IiAiOiIgZXhwcmVzc2lv
bg0KCS4NCmV4cHIxCT0gZXhwcjEgIiYiIGV4cHIyDQoJfCBleHByMg0KCS4NCmV4cHIyCT0g
ZXhwcjIgIj8iIGV4cHIzDQoJfCBleHByMw0KCS4NCmV4cHIzCT0gICBleHByNCAiOj0iIGV4
cHIzDQoJfCBleHByNCAiOj06IiBleHByMw0KCXwgZXhwcjQgIjwtIiBleHByMw0KCXwgZXhw
cjQgIjwtPiIgZXhwcjMNCgl8IGV4cHI0IG9wX2FzZ24gZXhwcjMNCgl8IGV4cHI0DQoJLg0K
ZXhwcjQJPSBleHByNCAidG8iIGV4cHI1DQoJfCBleHByNCAidG8iIGV4cHI1ICJieSIgZXhw
cjUNCgl8IGV4cHI1DQoJLg0KZXhwcjUJPSBleHByNSAifCIgZXhwcjYNCgl8IGV4cHI2DQoJ
Lg0KZXhwcjYJPSBleHByNiAiPCIgZXhwcjcNCgl8IGV4cHI2ICI8PSIgZXhwcjcNCgl8IGV4
cHI2ICI9IiBleHByNw0KCXwgZXhwcjYgIj49IiBleHByNw0KCXwgZXhwcjYgIj4iIGV4cHI3
DQoJfCBleHByNiAifj0iIGV4cHI3DQoJfCBleHByNiAiPDwiIGV4cHI3DQoJfCBleHByNiAi
PDw9IiBleHByNw0KCXwgZXhwcjYgIj09IiBleHByNw0KCXwgZXhwcjYgIj4+PSIgZXhwcjcN
Cgl8IGV4cHI2ICI+PiIgZXhwcjcNCgl8IGV4cHI2ICJ+PT0iIGV4cHI3DQoJfCBleHByNiAi
PT09IiBleHByNw0KCXwgZXhwcjYgIn49PT0iIGV4cHI3DQoJfCBleHByNw0KCS4NCmV4cHI3
CT0gZXhwcjcgInx8IiBleHByOA0KCXwgZXhwcjcgInx8fCIgZXhwcjgNCgl8IGV4cHI4DQoJ
Lg0KZXhwcjgJPSBleHByOCAiKyIgZXhwcjkNCgl8IGV4cHI4ICItIiBleHByOQ0KCXwgZXhw
cjggIisrIiBleHByOQ0KCXwgZXhwcjggIi0tIiBleHByOQ0KCXwgZXhwcjkNCgkuDQpleHBy
OQk9IGV4cHI5ICIqIiBleHByMTANCgl8IGV4cHI5ICIvIiBleHByMTANCgl8IGV4cHI5ICIl
IiBleHByMTANCgl8IGV4cHI5ICIqKiIgZXhwcjEwDQoJfCBleHByMTANCgkuDQpleHByMTAJ
PSBleHByMTEgIl4iIGV4cHIxMA0KCXwgZXhwcjExDQoJLg0KZXhwcjExCT0gZXhwcjExICJc
IiBleHByMTINCgl8IGV4cHIxMSAiQCIgZXhwcjEyDQoJfCBleHByMTEgIiEiIGV4cHIxMg0K
CXwgZXhwcjEyDQoJLg0KZXhwcjEyCT0gIm5vdCIgZXhwcjEyDQoJfCAifCIgZXhwcjEyDQoJ
fCAiISIgZXhwcjEyDQoJfCAiKiIgZXhwcjEyDQoJfCAiKyIgZXhwcjEyDQoJfCAiLSIgZXhw
cjEyDQoJfCAiLiIgZXhwcjEyDQoJfCAiLyIgZXhwcjEyDQoJfCAiXCIgZXhwcjEyDQoJfCAi
PSIgZXhwcjEyDQoJfCAiPyIgZXhwcjEyDQoJfCAifiIgZXhwcjEyDQoJfCAiQCIgZXhwcjEy
DQoJfCAiXiIgZXhwcjEyDQoJfCBleHByMTMNCgkuDQpleHByMTMJPSAiKCIgZXhwcmVzc2lv
bl9saXN0ICIpIg0KCXwgInsiIGV4cHJlc3Npb25fc2VxdWVuY2UgIn0iDQoJfCAiWyIgZXhw
cmVzc2lvbl9saXN0ICJdIg0KCXwgZXhwcjEzICIuIiBmaWVsZF9uYW1lDQoJfCBleHByMTMg
IigiIGV4cHJlc3Npb25fbGlzdCAiKSINCgl8IGV4cHIxMyAieyIgZXhwcmVzc2lvbl9saXN0
ICJ9Ig0KCXwgZXhwcjEzICJbIiBzdWJzY3JpcHRfbGlzdCAiXSINCgl8IGlkZW50aWZpZXIN
Cgl8IGtleXdvcmQNCgl8IGxpdGVyYWwNCgkuDQoNCmV4cHJlc3Npb25fbGlzdCA9IGV4cHJl
c3Npb25fb3B0DQoJfCBleHByZXNzaW9uX2xpc3QgIiwiIGV4cHJlc3Npb25fb3B0DQoJLg0K
c3Vic2NyaXB0X2xpc3QgPSBzdWJzY3JpcHQNCgl8IHN1YnNjcmlwdF9saXN0ICIsIiBzdWJz
Y3JpcHQNCgkuDQpzdWJzY3JpcHQgPSBleHByZXNzaW9uDQoJfCBleHByZXNzaW9uICI6IiBl
eHByZXNzaW9uDQoJfCBleHByZXNzaW9uICIrOiIgZXhwcmVzc2lvbg0KCXwgZXhwcmVzc2lv
biAiLToiIGV4cHJlc3Npb24NCgkuDQprZXl3b3JkID0gIiYiIGlkZW50aWZpZXINCgkuDQps
aXRlcmFsID0gc3RyaW5nX2xpdGVyYWwNCgl8IGludGVnZXJfbGl0ZXJhbA0KCXwgcmVhbF9s
aXRlcmFsDQoJfCBjc2V0X2xpdGVyYWwNCgkuDQoNCg==
--------------D07FD781A7537D236717351D--